package GameData;

import java.util.ArrayList;
import java.util.List;

import model.Lugar;
import model.Pais;
import model.Partida;


public class CasoAppModel {


	private int ID;
	private String nombrePais;
	private List<String> posiblesConexiones;
	private List<String> destinosFallidos;
	private List<String> lugares;
	private String paisesRecorridos;
	private String lugarFinal = "";
	private String culpable;
	

	public CasoAppModel(){
	}
	

	public CasoAppModel(int _ID){
		this.ID = _ID;
	}
	
	
	public void armarCaso(Partida p){
		Pais paisActual = p.getDetective().getPaisActual();
		this.nombrePais = paisActual.toString();
		this.lugares = obtenerNombresLugares(paisActual.getLugaresInteresantes());
		this.posiblesConexiones = this.obtenerNombresPaises(paisActual.getConexionesAereas());
		this.destinosFallidos = p.getDestinosFallidos();
		this.paisesRecorridos = p.getDetective().getRuta();
		this.culpable = p.getVillanoCulpable().getNombre();
		if(p.terminoLaPartida()){
			this.lugarFinal = buscarLugarFinal(paisActual);
		}
	}
	


	//Obtener los nombres de los objetos del modelo.
	
	private String buscarLugarFinal(Pais p){
		String ret = "";
		for (Lugar aLugar : p.getLugaresInteresantes()) {
			if(aLugar.getContieneAlVillano()){
				ret = aLugar.getNombre();
			}
		}
			return ret;
	}
	
	private List<String> obtenerNombresPaises(List<Pais> paises){
		List<String> retList = new ArrayList<String>();
		for (Pais aPais : paises) {
			retList.add(aPais.toString());
		}
		return retList;
	}
	
	private List<String> obtenerNombresLugares(List<Lugar> lugares){
		List<String> retList = new ArrayList<String>();
		for (Lugar aLugar : lugares){
			retList.add(aLugar.toString());
		}
		return retList;
	}

//Setters
	
	public void setID(int ID){
		this.ID = ID;
	}
	
	public void setNombrePais(String nombrePais) {
		this.nombrePais = nombrePais;
	}
	
	
	public void setPosiblesConexiones(List<String> posiblesConexiones) {
		this.posiblesConexiones = posiblesConexiones;
	}
	
	
	public void setDestinosFallidos(List<String> destinosFallidos) {
		this.destinosFallidos = destinosFallidos;
	}
	
	
	public void setLugares(List<String> lugares) {
		this.lugares = lugares;
	}
	
	
	public void setPaisesRecorridos(String paisesRecorridos) {
		this.paisesRecorridos = paisesRecorridos;
	}
	
	
// Getters
	
	
	
	public int getID(){
		return ID;
	}
	
	public String getNombrePais() {
		return nombrePais;
	}
	
	public List<String> getPosiblesConexiones() {
		return posiblesConexiones;
	}

	public List<String> getDestinosFallidos() {
		return destinosFallidos;
	}

	public List<String> getLugares() {
		return lugares;
	}

	public String getPaisesRecorridos() {
		return paisesRecorridos;
	}

	public String getLugarFinal() {
		return lugarFinal;
	}


	public void setLugarFinal(String lugarFinal) {
		this.lugarFinal = lugarFinal;
	}


	public String getCulpable() {
		return culpable;
	}


	public void setCulpable(String culpable) {
		this.culpable = culpable;
	}

}

